package com.example.workflowenginerdemo;


import mobi.workflowengine.core.WorkflowStatus;
import mobi.workflowengine.core.WorkflowTask;
import mobi.workflowengine.core.WorkflowTaskEndCallback;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

static Button btnCalcDemo;
	
	static int a = 10;
	static int b = 20;
	static int result = 0;
	
	static class multiply extends WorkflowTask
	{
		public multiply(WorkflowTaskEndCallback onEnd) {
			super(onEnd);
		}

		@Override
		public void start(WorkflowTask pParentWorkflowTask) {
			super.start(pParentWorkflowTask);
			result += a*b;
			onSuccessfulEnd();
		}
	};
	
	static class add extends WorkflowTask
	{
		public add(WorkflowTaskEndCallback onEnd) {
			super(onEnd);
		}

		@Override
		public void start(WorkflowTask pParentWorkflowTask) {
			super.start(pParentWorkflowTask);
			result += a+b;
			onSuccessfulEnd();
		}
	};
	
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		
		//final View rootView = inflater.inflate(R.layout.fragment_main_demo,
		//		container, false);
		
		btnCalcDemo = (Button)findViewById(R.id.btnDemoCalculation);
		
		btnCalcDemo.setOnClickListener( new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				
				mobi.workflowengine.core.WorkflowTaskManager.ShowWorkflowMessage(MainActivity.this, "Started Workflow");

				mobi.workflowengine.core.WorkflowTaskManager.MainWorkflow.jumpStartNewWorkflow(
						
						new add( new WorkflowTaskEndCallback() {
							
							@Override
							public void doThis(WorkflowStatus status) {
								
								if(status==WorkflowStatus.SuccessfulEnd)
								{
									mobi.workflowengine.core.WorkflowTaskManager.MainWorkflow.jumpStartNewWorkflow(
											
											new multiply(new WorkflowTaskEndCallback() {
												
												@Override
												public void doThis(WorkflowStatus status) {
													
													if(status==WorkflowStatus.SuccessfulEnd)
													{
														mobi.workflowengine.core.WorkflowTaskManager.AddToWorkflowMessage(MainActivity.this, "\r\nDone...");
														
														mobi.workflowengine.core.WorkflowTaskManager.CloseWorkflowMessage(MainActivity.this, 3);
														
														Toast.makeText(MainActivity.this , "Result = "+result, Toast.LENGTH_LONG).show();
													}
													
												}
											})
											
											);
								}
							}
						})
						
						);
				
				
			}
		} );
		
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}
}
